x86/hvm: Disallow unknown MSR_EFER bits
authorAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 30 Jul 2018 09:29:39 +0000 (11:29 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 30 Jul 2018 09:29:39 +0000 (11:29 +0200)
commit7de21555730367497eb01edf6e9e9530224105e7
treed15e7626092136f232ef214e6590014fec6e335c
parent06d2a763d07d53a4ccc7bd1255ffc9ea01ec1609
x86/hvm: Disallow unknown MSR_EFER bits

It turns out that nothing ever prevented HVM guests from trying to set unknown
EFER bits.  Generally, this results in a vmentry failure.

For Intel hardware, all implemented bits are covered by the checks.

For AMD hardware, the only EFER bit which isn't covered by the checks is TCE
(which AFAICT is specific to AMD Fam15/16 hardware).  We never advertise TCE
in CPUID, but it isn't a security problem to have TCE unexpected enabled in
guest context.

Disallow the setting of bits outside of the EFER_KNOWN_MASK, which prevents
any vmentry failures for guests, yielding #GP instead.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
master commit: ef0269c6215d642a709866f04ba1a1f9f13f3614
master date: 2018-07-24 11:25:53 +0100
xen/arch/x86/hvm/hvm.c